//! @file   lc_shutdown_policy.h
//! @brief  
//! @author Sayan Chaliha
//! @date   October, 2011
//!
//! 
#ifndef _LC_SHUTDOWN_POLICY_H
#define _LC_SHUTDOWN_POLICY_H

#include "libcyan_internal.h"
#include "lc_types.h"
#include "lc_mutex.h"
#include "lc_condition_variable.h"
#include "lc_delegate.h"

namespace cyan {
    class CYAN_API ShutdownPolicy : public Object {
    public:
        typedef Delegate<Bool ()> Evaluator;
        
        ShutdownPolicy() {
        }
        
        virtual ~ShutdownPolicy() {
        }
        
        virtual void shutdown(Evaluator, Mutex&, ConditionVariable&) = 0;
    };
}

#endif /* _LC_SHUTDOWN_POLICY_H */
